function obj = robot()

    % wspolrzedne zajmowanego pola w zmiennej mapa
    obj.pozycja = [0 0];
    
    % kierunek w jakim porusza sie robot
    % 1 - polnoc, 2 - wschod, 3 - poludnie, 4 - zachod
    obj.kierunek = 1;
    
    % numer kasy ktorej zlecenie realizuje robot (0-wolny)
    obj.numer_kasy = 0;
    
    % stan robota:
    % 0 - stoi
    %     brak innych zadan 
    % 1 - poruszanie sie w glownym korytarzu
    %     robot znajduje sie w glownym korytarzu, nie wykonuje manewru
    %     wyprzedzania ani kolejkowania; jedzie do celu zgodnie z trasa 
    %     zapisana w zmiennej robot.droga
    % 2 - poruszanie sie miedzy regalami
    %     robot znajduje sie miedzy regalami, ale nie sciaga produktu z
    %     polki
    % 3 - wykonywanie manewru wyprzedzania
    %     robot ma wyznaczone i zarezerwowane pola do wykonania manewru
    %     wyprzedzania w glownym korytarzu
    % 4 - oczekiwanie w kolejce
    %     robot jest zapisany do kolejki do docelowego korytarza (choc moze
    %     jeszcze nie stac w odpowiednim miejscu w tej kolejce)
    % 5 - pobieranie przedmiotu z polki
    % 6 - rozladunek przy kasie
    obj.stan = 0;
    
    % (wartosc-1) jest rownoznacza z iloscia robotow
    % ktore stoja w kolejce przed danym robotem
    % 0 oznacza, ze robot nie stoi w kolejce
    obj.pozycja_w_kolejce = 0;
    
    % numer korytarza do ktorego robot jedzie
    obj.indeks_korytarza = 0;
     
    % tablica indeksow produktow, ktore robot musi
    % zabrac
    obj.produkty = [];

    % tablica indeksow produktow, ktore robot aktualnie
    % wiezie
    obj.zabrane_produkty = [];
    
    % tablica kolejnych pol przez ktore robot powinien
    % przejechac (np w przypadku wykonywania manewru
    % wyprzedzania)
    obj.droga = [];

    % docelowe pole do ktorego dazy robot
    obj.cel = [];
    
    % maska zarezerwowania pol w korytarzu przez robota
    % 0 - nie zarezerwowane
    % 1 - zarezerwowane
    % 999 - zapamietane do rezerwacji (zostanie zarezerwowane
    %       po zwolnieniu przez poprzedniego robota)
    obj.maska_korytarza = [pm(0,0) pm(0,0) pm(0,0) pm(0,0) pm(0,0) pm(0,0) pm(0,0) pm(0,0)];
    
    %tablica indeksow produktow ktore nalezy zabrac z danego korytarza
    obj.produkty_in =[];
    
    % licznik iteracji oczekiwania na zwolnienie miejsca przed robotem,
    % przed wykonaniem jakiegos manewru (zawrocenie, wyprzedzenie, itp)
    obj.cierpliwosc = 6;
    
    % wspolrzedne wyjazdu
    obj.wyjazd = [0 0];
    % wspolrzedne wjazdu
    obj.start = [0 0];
    % aktualny czas oczekiwania przy zaladunku lub rozladunku
    obj.czekaj = 0;
